﻿
using System;
using System.Collections.Generic;
using System.Globalization;

namespace BlogsAPI.Sites.FoursquareSharp.Endpoints {
    public class Unauthenticated : FoursquareAPI
    {
        public Unauthenticated(FoursquareConfig config) : base(config, "/venues/") { }

        /// <summary>
        /// Возвращает список мест, найденных по заданным условиям поиска.
        /// </summary>
        /// <param name="latitude">географическая широта исходной точки поиска, заданная в градусах (от -90 до 90).</param>
        /// <param name="longitude">географическая долгота исходной точки поиска, заданная в градусах (от -180 до 180).</param>
        /// <param name="radius">тип радиуса зоны поиска (от 100 до 100000)</param>
        /// <returns></returns>
        /// <example>https://developer.foursquare.com/docs/explore#req=venues/search%3Fll%3D55.083428,38.805256%26radius%3D300%26intent%3Dbrowse</example>
        public Response<List<Venue>> GetPlaces(double latitude, double longitude, int radius = 1)
        {
            return (Response<List<Venue>>)Mapper.Map<Response<List<Venue>>>(GetPlacesJson(latitude, longitude, radius));
        }

        private string GetPlacesJson(double latitude, double longitude, int radius = 800)
        {
            string uri = string.Format(CultureInfo.GetCultureInfo("en-US"), base.Uri + "search?ll={1},{2}&radius={3}&intent=chekin",
                AuthInfo,
                latitude,
                longitude,
                radius
                );
            uri += String.Format("&client_id={0}&client_secret={1}&v={2}", 
                FoursquareConfig.ClientId,
                FoursquareConfig.ClientSecret,
                FoursquareConfig.ApiVersion);
            return HttpClientOld.GET(uri);
        }

    }
}
